package com.idanchuang.component.redis.config;

/**
 * @author yjy
 * @date 2019/12/2 9:32
 **/
public class DRedisLockConfig {

    /** 默认的锁超时时间 */
    public static long DEFAULT_TIMEOUT = 30000L;
    /** 锁key前缀 */
    public static String LOCK_PREFIX = "D_LOCK_";
    /** 默认的获取锁超时时间 */
    public static long DEFAULT_TRY_LOCK_TIMEOUT = 10000L;
    /** 等待锁时, 自旋尝试的周期, 默认10毫秒 */
    public static long DEFAULT_LOOP_INTERVAL = 10L;

    /**
     * @param defaultTimeout 默认的锁超时时间
     */
    public void setDefaultTimeout(long defaultTimeout) {
        DRedisLockConfig.DEFAULT_TIMEOUT = defaultTimeout;
    }

    /**
     * @param lockPrefix 锁key前缀
     */
    public void setLockPrefix(String lockPrefix) {
        DRedisLockConfig.LOCK_PREFIX = lockPrefix;
    }

    /**
     * @param defaultTryLockTimeout 默认的获取锁超时时间
     */
    public void setDefaultTryLockTimeout(long defaultTryLockTimeout) {
        DRedisLockConfig.DEFAULT_TRY_LOCK_TIMEOUT = defaultTryLockTimeout;
    }

    /**
     * @param defaultLoopInterval 等待锁时, 自旋尝试的周期, 单位毫秒
     * @deprecated useless
     */
    public void setDefaultLoopInterval(long defaultLoopInterval) {
        DRedisLockConfig.DEFAULT_LOOP_INTERVAL = defaultLoopInterval;
    }

    /**
     * @return 默认的锁超时时间
     */
    public long getDefaultTimeout() {
        return DRedisLockConfig.DEFAULT_TIMEOUT;
    }

    /**
     * @return 锁key前缀
     */
    public String getLockPrefix() {
        return DRedisLockConfig.LOCK_PREFIX;
    }

    /**
     * @return 默认的获取锁超时时间
     */
    public long getDefaultTryLockTimeout() {
        return DRedisLockConfig.DEFAULT_TRY_LOCK_TIMEOUT;
    }

    /**
     * @return 等待锁时, 自旋尝试的周期, 单位毫秒
     */
    public long getDefaultLoopInterval() {
        return DRedisLockConfig.DEFAULT_LOOP_INTERVAL;
    }

}
